/**
 * 
 */
package org.xelnaga.defiler.business;

import java.util.List;

import org.xelnaga.defiler.domain.ContainerModel;
import org.xelnaga.defiler.domain.ContentContainerWrapper;
import org.xelnaga.defiler.domain.ContentletWrapper;
import org.xelnaga.defiler.domain.FolderModel;
import org.xelnaga.defiler.web.controller.OrderForm;
import org.xelnaga.defiler.web.util.PagerDisplay;


/**
 * @author qijb
 *
 */
public interface ContentletAPI {

	/**
	 * 取单个contentlet。
	 * @param inode
	 * @return
	 */
	ContentletWrapper getContent(Long inode);
	
	/**
	 * 显示所有的发布到指定容器，而且容器需要显示在指定频道的所有内容。
	 * 不包括发布信息，即ContentContainerModel的信息。
	 * @param folderInode 容器发布到的频道
	 * @param containerInode 容器ID
	 * @param count	显示数量
	 * @return
	 */
	List<ContentletWrapper> getListByFolderAndContainer(Long folderInode, Long containerInode, Integer count);
	
	/**
	 * 根据时间、发布目录、发布容器取内容列表
	 * @param folderInode
	 * @param containerInode
	 * @param count
	 * @return
	 */
	List<ContentContainerWrapper> getListByFolderContainerAndDate(Long folderInode, Long containerInode, Integer count);
	/**
	 * 显示发布容器以及所有内容的信息。
	 * @param folderInode 容器发布到的频道
	 * @param containerInode	容器id
	 * @param count	显示数量
	 * @return
	 */
	List<ContentContainerWrapper> getContentContainerListByContainerInFolder(Long folderInode, Long containerInode, Integer count);
	/**
	 * 
	 * @param inode
	 * @return
	 */
	ContainerModel getContainer(Long inode);
	
	ContainerModel getDailyHotContainer();
	
	/**
	 * 当前频道中所有的内容列表。
	 * @param folder
	 * @param start
	 * @param count
	 * @return
	 */
	PagerDisplay<ContentletWrapper> getListByFolder(FolderModel folder, Integer start, Integer count);
	
	/**
	 * 热销排行
	 * @param contentletInode
	 * @param containerInode
	 * @param count
	 * @return
	 */
	List<ContentletWrapper> getListByHotSale(Long contentletInode, Long containerInode, Integer count);
	
	/**
	 * 收藏排行
	 * @param contentletInode
	 * @param count
	 * @return
	 */
	List<ContentletWrapper> getListByFaverite(Long contentletInode, Integer count);
	
	/**
	 * 热卖中的同频道产品
	 * @param contentletInode
	 * @param count
	 * @return
	 */
	List<ContentletWrapper> getListByFolderFriend(Long contentletInode, Integer count);
	
	/**
	 * 基于项目的推荐，即“浏览了该宝贝的会员还浏览了”
	 * @param contentletInode
	 * @param count
	 * @return
	 */
	List<ContentletWrapper> getListByItemBasedRecommand(Long contentletInode, Integer count);
	
	OrderForm getUserCart(String cookieValue);
}
